package com.unlcn.ils.kas.dao.mapper.order;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.unlcn.ils.kas.dao.model.order.OrderOtd;
import com.unlcn.ils.kas.dao.model.order.bo.ErpOrderSelectHeadBo;
import com.unlcn.ils.kas.dao.model.order.bo.OnWayExceptionBo;
import com.unlcn.ils.kas.dao.model.order.bo.OrderForCustcomerBo;
import com.unlcn.ils.kas.dao.model.sysadmin.bo.UserBo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 订单在途跟踪 Mapper 接口
 * </p>
 *
 * @author qichao
 * @since 2018-03-06
 */
public interface OrderOtdMapper extends BaseMapper<OrderOtd> {

    /**
     * 异常订单列表
     * @param page
     * @param wrapper
     * @return
     */
    List<OrderOtd> exceptionLine(Page<OrderOtd> page, @Param("ew") Wrapper<OrderOtd> wrapper);

    List<OrderForCustcomerBo> selectByConditions(Map<String, Object> map);

    /**
     * 获取运输方式
     * @return
     */
    List<String> getTransportType();

    /**
     * 获取无车承运人
     * @return
     */
    List<String> getSupplier();

    /**
     * 获取经销商
     * @return
     */
    List<String> getDealerName();

    /**
     * 获取发运类型
     * @return
     */
    List<String> getShipmentType();

    /**
     * 查询某时间段订单
     * @param startTime
     * @param endTime
     * @param customerNo
     * @return
     */
    List<String> selectOrderNo(@Param("startTime") String startTime,
                               @Param("endTime") String endTime, @Param("customerNo") String customerNo);

    /**
     * erp 获取订单详情
     * @param startTime
     * @param endTime
     * @param customerNo
     * @return
     */
    List<ErpOrderSelectHeadBo> erpSelectDetail(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("customerNo") String customerNo);

    /**
     * 导入更新
     * @param orderOtd
     */
    void importUpdate(OrderOtd orderOtd);

    /**
     * 更新订单
     * @param orderOtd
     */
    void updateOrder(OrderOtd orderOtd);

    /**
     * 导出异常订单数据
     * @param customerNo
     * @param classCode
     * @param onWayExceptionBo
     * @return
     */
    List<OrderOtd> exportExceptionData(@Param("customerNo") Integer customerNo,
                                       @Param("classCode") Integer classCode, @Param("onWayExceptionBo")OnWayExceptionBo onWayExceptionBo);
}
